import { calculateTableColumnNoWrapWidth } from '@renderer/utils/TableUtils'
import type { Ref } from 'vue'

// 防止 table 抖动
const antiShakeMap = new Map()

// 计算 TableColumn 宽度
export default function useCalculateColumnWidth(
  curVisibleTableDataRef: Ref<ITableDataItem[]>
) {
  // 当前列宽度(同一 columnName 只计算一次宽度)
  function getColumnWidth(columnName: string) {
    if (!antiShakeMap.has(columnName)) {
      const width = calculateTableColumnNoWrapWidth(
        curVisibleTableDataRef.value,
        columnName,
        'max',
        80,
        380
      )
      antiShakeMap.set(columnName, width)
    }

    return antiShakeMap.get(columnName)
  }

  function resetAntiShakeMap() {
    antiShakeMap.clear()
  }

  return {
    getColumnWidth,
    resetAntiShakeMap
  }
}
